package object;

public class IntegerDemo {
    public static void main(String[] args) {
        //演示包装类的常用操作：
        //1)可以通过包装类来获取基本类型的取值范围:
        int max = Integer.MAX_VALUE;//获取int的最大值
        int min = Integer.MIN_VALUE;//获取int的最小值
        System.out.println("int的最大值为:"+max+",int的最小值为:"+min);

        long max1 = Long.MAX_VALUE;//获取long的最大值
        long min1 = Long.MIN_VALUE;//获取long的最小值
        System.out.println("long的最大值为:"+max1+",long的最小值为:"+min1);

//        2)包装类可以将字符串转换为对应的基本类型---必须熟练掌握
        String s1 = "39";
        Integer s2 = 39;
        int age = Integer.parseInt(s1);//将字符串s1转换为int类型并赋值给age
        int age1 = s2;
        System.out.println(age);//39---int类型
        System.out.println(age1);

        String s3 = "123.456";
        double price = Double.parseDouble(s3);
        System.out.println(price);

        //演示包装类的定义：
        Integer i1 = new Integer(500);
        Integer i2 = new Integer(500);
        System.out.println(i1 == i2);
        System.out.println(i1.equals(i2));

//        valueOf()方法会复用1个字节(-128到127)范围内的数据
        Integer i3 = Integer.valueOf(127);
        Integer i4 = Integer.valueOf(127);
        System.out.println(i3 == i4);
        System.out.println(i3.equals(i4));//包装类重写equals比较值了

//        将包装类型转为基本类型
        double i = i4.doubleValue();
        System.out.println(i);

//        触发了自动装箱特性，会被编译为:Integer j = Integer.valueOf(5);
        Integer j = 5;//基本类型到包装类----装箱
//        触发了自动拆箱特性，会被编译为:Int k = j.intValue();
        int k = j;//包装类到基本类型------拆箱


    }
}
